import os
import sys
module_path = sys.path.append('/home/dpirvu/.local/lib/python3.8/site-packages/')
module_path = sys.path.append('/home/dpirvu/.local/bin/')
for i in sys.path:
i = i.replace("8", "7")
if i not in sys.path:
sys.path.append(i)
print(i)
import numpy as np
import random
import math
import statistics as stat
import matplotlib
import matplotlib.pyplot as plt
import scipy as scp
import scipy.optimize as sco
import scipy.signal as scs
import scipy.special as ssp
import scipy.integrate as sci
from itertools import zip_longest, groupby, cycle
from scipy.ndimage import gaussian_filter1d
from uncertainties import ufloat
np_load_old = np.load
np.load = lambda *a,**k: np_load_old(*a, allow_pickle=True, **k)
nLat = 1024
nTime = 128
nSims = 500
phi0 = 1.
m2eff = 1.
lamb = 1.
lenLat = 100.
nCols = 2
nyq = nLat//2+1
spec = nyq
alpha = 8
dx = lenLat/nLat
dk = 2.*np.pi/lenLat
dt = dx/alpha
dtout = dt*alpha
test_sim_location = lambda nL, tem, sim: '/gpfs/dpirvu/thermal_bubbles/wall_fluctuations_x'+str(nL)+'_temp{:.4f}'.format(tem)+'_sim'+str(sim)+'_fields.dat'
plot_path = '/home/dpirvu/project/thermal_bubbles/experiments/domain_wall_with_fluctuations/empirical_potential_data/'
def test_extract_sim(nT, nL, tem, sim):
data = np.genfromtxt(test_sim_location(nL, tem, sim))
return np.asarray([np.reshape(data[:,col], (nT, nL)) for col in range(nCols)])
freqs = np.fft.fftshift(np.fft.fftfreq(nLat, d=dx))*2*np.pi
norm = 1./ phi0 / np.sqrt(2.*lenLat)
omega = np.sqrt(freqs**2. + m2eff)
spectral_field = lambda tem: np.asarray([norm * np.sqrt(2./(np.exp(omega[k]/tem) - 1.)) / omega[k]**0.5 if k != nLat//2 else 0 for k in range(nLat)])
th_masses = lambda tem: -m2eff + 0.5 * lamb * np.sum( np.abs(spectral_field(tem))**2. )
list_temp = [0.6, 1.]
all_data = np.asarray([[test_extract_sim(nTime, nLat, temp, sim) for sim in range(nSims)] for temp in list_temp])
print('Done.')
if True:
for tt, temp in enumerate(list_temp):
div = 50
fig, ax = plt.subplots(int(np.ceil(nSims/div)), div, figsize = (div*4, 4.*(nSims+1)//div))
io = -1
for sim in range(nSims):
if sim % div == 0: io += 1
im0 = ax[io][sim%div].imshow(all_data[tt][sim][0], aspect='auto', interpolation='none', origin='lower')
clb = plt.colorbar(im0, ax = ax[io][sim%div])
ax[io][sim%div].set_title('sim = '+str(sim))
plt.suptitle('T = '+str(temp), weight=10, size='xx-large', y=1)
plt.show()